/* Declaracao visando identificar o modulo como servidor. */

#define SERVIDOR_LOGICA_NEGOCIO


/* Inclusao de arquivo com a declaracao da interface. */

#include <stdio.h>
#include <string.h>
#include "interface_logica_negocio.h"
#include "../Camada_Persistencia/interface_persistencia.h"


/* Definicao do corpo da funcao. */

// Usuarios
int cadastrar_usuario_negocio(char nome_de_usuario[11], char senha[7], int identificador)
{
	Usuario *usuarios;
	usuarios = listar_usuarios_persistencia();
			while(usuarios!=NULL){
				if(usuarios->identificador==identificador){
					printf("\nUm usuario com esse ID ja existe!\n");
					return -1;
				}
				usuarios=usuarios->prox;
			}
	return cadastrar_usuario_persistencia(nome_de_usuario, senha, identificador);
}


int autenticar_usuario_negocio(char nome_de_usuario[11], char senha[7])
{
	return autenticar_usuario_persistencia(nome_de_usuario, senha);
}


int alterar_cadastro_negocio(char nome_de_usuario[11], char senha[7], char novo_nome_de_usuario[11], char nova_senha[7])
{
	return alterar_cadastro_persistencia(nome_de_usuario, senha, novo_nome_de_usuario, nova_senha);
}

int encerrar_cadastro_negocio(char nome_de_usuario[11], char senha[7])
{
	return encerrar_cadastro_persistencia(nome_de_usuario, senha);
}

Usuario* listar_usuarios_negocio()
{
	return listar_usuarios_persistencia();
}



// Postagens
int cadastrar_postagem_negocio(char texto_postagem[31], int identificador_postagem, bool comentavel, int identificador_autor, char data[11])
{
	Postagem *postagens;
	postagens = listar_postagens_persistencia();
		while(postagens!=NULL){
			if(postagens->identificador_postagem==identificador_postagem){
				printf("\nUma postagem com esse ID ja existe!\n");
				return -1;
			}
			postagens=postagens->prox;
		}
	return cadastrar_postagem_persistencia(texto_postagem, identificador_postagem, comentavel, identificador_autor, data);
}


int cadastrar_comentario_negocio(char texto_comentario[21], int identificador_comentario, int identificador_postagem, int identificador_autor, char data[11])
{
	//numero maximo de comentarios de usuario por postagem: 5
	Comentario *comentarios;
	int contador=1;
	comentarios = listar_comentarios_persistencia(identificador_postagem);
	while(comentarios!=NULL){
		if(comentarios->identificador_comentario==identificador_comentario){
			printf("\nUm comentario com esse ID ja existe!\n");
			return -1;
		}
		if(comentarios->identificador_autor==identificador_autor)
			contador++;
		comentarios=comentarios->prox;
	}
	if(contador>=5){
		printf("\nLimite de comentario por postagem atingido.\nPara fazer um novo comentario nessa postagem e necessario apagar um ja existente");
		return -1;
	}else
	return cadastrar_comentario_persistencia(texto_comentario, identificador_comentario, identificador_postagem, identificador_autor, data);
}


int remover_postagem_negocio(int identificador_postagem, int identificador_autor)
{
	return remover_postagem_persistencia(identificador_postagem, identificador_autor);
}


int remover_comentario_negocio(int identificador_comentario, int identificador_autor)
{
	return remover_comentario_persistencia(identificador_comentario, identificador_autor);
}

int remover_postagens_usuario_negocio(int identificador_autor)
{
	return remover_postagens_usuario_persistencia(identificador_autor);
}


int remover_comentarios_usuario_negocio(int identificador_autor)
{
	return remover_comentarios_usuario_persistencia(identificador_autor);
}


Postagem* busca_postagem_negocio(int identificador_autor)
{
	return busca_postagem_persistencia(identificador_autor);
}

Comentario* busca_comentario_negocio(int identificador_autor)// Usuarios

{
	return busca_comentario_persistencia(identificador_autor);
}


int avaliar_postagem_negocio(int identificador_postagem, float avaliacao)
{
	return avaliar_postagem_persistencia(identificador_postagem, avaliacao);
}


Postagem* listar_postagens_negocio()
{
	Postagem *postagem;
	postagem = listar_postagens_persistencia();
	return postagem;
}


Comentario* listar_comentarios_negocio(int identificador_postagem)
{
	Comentario *comentario;
	comentario = listar_comentarios_persistencia(identificador_postagem);
	return comentario;
}



